package fr.demos.cinepantin.dao.impl;

import java.util.List;

import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.transaction.UserTransaction;

import fr.demos.cinepantin.Produit;
import fr.demos.cinepantin.ProduitNeuf;
import fr.demos.cinepantin.dao.interfac.ProduitDao;
import fr.demos.cinepantin.enumerate.Categorie;
import fr.demos.cinepantin.exception.DaoExceptions;


public class ProduitDaoImpl implements ProduitDao {

    // Grace a l'injection l'objet entityManager est instancie
    @PersistenceContext(unitName = "cinemarc")
    private EntityManager em; // gestion des entity qui sont dans un contexte
    @Resource
    private UserTransaction ut;

	@Override
	public List<Produit> getAllProduit() throws DaoExceptions {
		List<Produit> listeproduit = null; 
		
		String query = "select p from Produit p";
	 	TypedQuery<Produit> q = em.createQuery(query, Produit.class);
	 	listeproduit = q.getResultList();
		// TODO Auto-generated method stub
		return listeproduit ;
	}

	@Override
	public List<ProduitNeuf> getAllProduitNeufByCategorie(Categorie categorie) throws DaoExceptions {
		ProduitNeuf produitneuf = null;
		
		produitneuf = em.find(ProduitNeuf.class, categorie);
	
	 	String query = "select p from ProduitNeuf p where p.categorie like ?1";
	 	TypedQuery<ProduitNeuf> q = em.createQuery(query, ProduitNeuf.class);
	 	q.setParameter(1, categorie);
		 	List<ProduitNeuf> resProduits = q.getResultList();
		
		  	return resProduits;
	}
	

	@Override
	public List<Produit> getAllProduitOccasionByCategorie(Categorie categorie) throws DaoExceptions {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Produit getProduitbyId(int idProduit) throws DaoExceptions {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Produit getProduitbyCategorie(Categorie categorie)
			throws DaoExceptions {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Produit> getAllProduitNeufByCategorie() throws DaoExceptions {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Produit> getAllProduitOccasionByCategorie()
			throws DaoExceptions {
		// TODO Auto-generated method stub
		return null;
	}

}
